// watch用于收集依赖，当依赖发生调用回调函数
class Watch {
  constructor(vm, key, cb) {
    this.vm = vm
    // data中属性名称
    this.key = key
    // 回调函数负责更新视图
    this.cb = cb


    // 把watcher对象记录到Dep的target静态属性中
    Dep.target = this
    // 触发get方法，在get方法中调用addSub
    this.oldValue = vm[key]
    // target设置为空，防止重复添加
    Dep.target = null 
  }
  // 当数据发生变化的时候更新视图
  update() {
    let newValue = this.vm[this.key]
    if(this.oldValue === newValue){
      return
    }
    this.cb(newValue)
  }
}